The term web services refers to various protocols and standards for exchanging data between applications in a platform-independent manner. Usually, web services refers to the exchange of extensible markup language (XML) formatted messages using the well-known SOAP protocol. The primary transport mechanism of these SOAP messages is the Hypertext Transport Protocol (HTTP) which is commonly used by web browsers and servers. However, the term web services, as used herein encompasses other protocols for exchanging data between connected systems.
A typical web services transaction is known as a remote procedure call (RPC) in which a client sends a request to a host. The host processes the request and sends a response with the results of the processing. The RPC is a useful mechanism for obtaining readily available information from a service provider. For example, a client may request a stock quote or a weather report and the host can then retrieve the requested information and return it to the client.
While RPC transactions are well suited for a variety of situations, there are many transactions for which the RPC is not suited. For example, there are many business problems requiring long-running transactions that cannot be adequately addressed by RPCs in web services. Long-running transactions are transactions that generally cannot be handled in real-time. For example, a client may request a sales or rental quote from a broker-server, which then must check rates and availability before returning with a result. In this case, the server will send a quick acknowledgement of the request, but may not return with a result for some time. In many cases, the request could initiate a complex series of messages between various service providers in an effort to gather the necessary information. These transactions are referred to as asynchronous conversational transactions. An interaction is said to be asynchronous when the associated messages are chronologically and procedurally decoupled. A Web service conversation involves maintaining some state information during a transaction involving multiple messages or participants.
For example, FIG. 1 shows a diagram depicting a connected system 10 having plurality of service providers and a client in the context of a rental negotiation. In this example, client 12 may send a request for a quote to broker 14, which is a service provider. In response, the broker sends an immediate acknowledgement to client 12 and then requests rates from rental rate service 16. Rental rate service 16 responds with current rental rates. Broker 14 might then request a quote from quote generator 18 which responds with same. Broker 14, then finally sends a result of the quote request to client 12. Client 12 can reject or accept the quote. If rejected, the broker may repeat some operations and return with a better quote. If accepted, the broker may request a reservation from reservation service 19. Because the various service providers may retain information of the entities with whom it is communicating and the status of the communication, the transactions can be seen as asynchronous and conversational in nature.
Coding, testing, and debugging service provider applications handling asynchronous and conversational transactions can very tedious due to the complex and interconnected nature of the communications. To determine where a break-down occurred, the programmer is required to review various trace files which contain the text of the messages being passed from one component to another, as well as correlate these messages with specific conversations. The programmer is required to read the trace files, which not necessarily designed to be readily understood by a human, and have knowledge of the interactions of the different components of the web service to identify the origin of the error, which may not be immediately apparent.
Integrated development environments (IDEs) have been developed to provide various tools to assist the programmer in coding and debugging software, however, these tools have not adequately addressed the problem of testing and debugging conversational transactions in web services. It would therefore be desirable to provide some mechanism to aid in the visualization of the messages being communicated among various service providers.